<?php
/**
 * 动态栏目列表（由程序自动维护）
 * 原理：如果开发者提供 "parent_node" 参数，则直接查找父节点属于 parent_node 的
 * 所有子节点，如果未提供，但是提供了 "current_node" 参数，则查询和当前节点平级的
 * 节点集合，如果全部都未提供，则显示所有的定义节点。
 */

class ColumnListsDynamic extends CWidget {

    public $title = '';
    public $current_node;
    public $parent_node;

    public function run() {
        $criteria = new CDbCriteria();
        $criteria->condition = "parent_id != 0";
        if ($this->parent_node) {
            $criteria->addCondition("parent_id = {$this->parent_node}");
        } else {
            $n_value = ($this->current_node)
                ? $this->current_node
                : Yii::app()->request->getParam('node', 0);
            if ($n_value) {
                if (Node::hasChild($n_value)) {
                    $this->parent_node = $n_value;
                    $criteria->addCondition("parent_id = {$n_value}");
                } else {
                    $node = Node::model()->findByPk($n_value);
                    if ($node !== null) {
                        $this->parent_node = $node->parent_id;
                        $criteria->addCondition("parent_id = {$node->parent_id}");
                    }
                }
            }
        }

        if (empty($this->title)) {
            $this->title = Node::getNodeNameByPk($this->parent_node);
        }

        $columns = Node::model()->findAll($criteria);

        $this->render('ColumnListsDynamic', array(
            'title' => $this->title,
            'columns' => $columns,
        ));
    }
}
